In video coding systems, a conventional encoder may code a source video sequence into a coded representation that has a smaller bit rate than does the source video and, thereby achieve data compression. Coded video may be stored and/or transmitted according to a coding policy, typically conforming to a standard such as MPEG4 or MP4. A decoder may then invert the coding processes performed by the encoder to retrieve the source video. The decoded data may then be displayed on a display device.
Video coding systems initially may separate a source video sequence into a series of frames, each frame representing a still image of the video. A frame may be further divided into blocks of pixels. Each frame of the video sequence may then be coded on a block-by-block basis according to any of a variety of different coding techniques. For example, using predictive coding techniques, some frames in a video stream may be coded independently (intra-coded I-frames) and some other frames may be coded using other frames as reference frames (inter-coded frames, e.g., P-frames or B-frames). P-frames may be coded with reference to a single previously coded frame and B-frames may be coded with reference to a pair of previously coded frames.
To prepare the video data for compression or display, each frame may be scaled. For example, in limited bandwidth situations, an encoder may downscale high-resolution source video to a lower resolution in order to achieve greater compression. Similarly, a decoder may upscale or downscale each frame in a recovered sequence in order to prepare the recovered video for display on displays of different sizes.
Video scaling is conventionally implemented with a dedicated hardware application specific integrated circuit (ASIC) or image signal processor (ISP) that may provide consistent latency but may be limited to a fixed algorithm, a restricted set of variable coefficients, and restrictions on the input and output ranges for scaling. However conventional software scalers are more flexible but commonly require extensive processing time and other system resources. Accordingly, there is a need in the art for a more flexible scaler that has low latency.